﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using VSSTQH.DataAccess;

namespace VSSTQH
{
    public partial class FrmUpdateUsers : Form
    {
        #region Ctors
        /// <summary>
        /// Constructor for create new status
        /// </summary>
        public FrmUpdateUsers()
        {
            InitializeComponent();

            Initialize();

        }

        #endregion

        #region Field Members

        private bool _isEdit = false;
        private IUserDAO _dataAccess = new UserDAO();

        #endregion

        #region Property Members
        private UserModel _user = new UserModel();
        public UserModel User
        {
            get { return _user; }
            set
            {
                if (_user != value)
                {
                    _isEdit = true;
                    _user = value;
                }
            }
        }

        private IList<UserModel> _collection;
        public IList<UserModel> Collection
        {
            set { _collection = value; }
        }
        #endregion

        #region Methods

        private void Initialize()
        {
            this.MaximizeBox = false;

            this.btnSave.Click += new EventHandler(delegate { ClickButtonSave(); });
            this.btnClose.Click += new EventHandler(delegate { this.Close(); });
        }

        protected override void OnLoad(EventArgs e)
        {
            if (_isEdit)
            {
                this.edtUserID.Enabled = false;
                this.edtUserID.Text = User.Username;
                this.edtFullname.Text = User.Fullname;
                if (User.GroupID == 1)
                {
                    rdoAdmin.Checked = true;
                }
                else
                {
                    rdoUser.Checked = true;
                }
            }
            else
            {
                this.edtUserID.Enabled = true;

            }
            base.OnLoad(e);
        }

        #endregion

        #region Action Members

        /// <summary>
        /// Click button save
        /// </summary>
        private void ClickButtonSave()
        {
            if (this.edtUserID.TextLength == 0)
            {
                Common.ShowAlert("Bạn cần nhập tên đăng nhập!");
                return;
            }

            if (this.edtFullname.TextLength == 0)
            {
                Common.ShowAlert("Bạn cần nhập họ tên người dùng!");
                return;
            }

            _user.Username = this.edtUserID.Text;
            _user.Fullname = this.edtFullname.Text;
            _user.Password = Encrypt.Encode("MD5", "1234");
            if (rdoAdmin.Checked)
            {
                _user.GroupID = 1;
                _user.GroupName = "Quản lý";
            }
            else
            {
                _user.GroupID = 0;
                _user.GroupName = "Người dùng";
            }

            if (!_isEdit)
            {

                if (_dataAccess.Add(_user))
                {
                    _collection.Add(_user);
                    _user = new UserModel() { Active = true };
                    this.edtUserID.Text = String.Empty;
                    this.edtFullname.Text = String.Empty;
                    this.rdoUser.Checked = true;
                    this.edtUserID.Focus();
                }
                else
                {
                    Common.ShowAlert("Tạo mới người dùng bị lỗi");
                }
            }
            else
            {
                if (_dataAccess.Edit(_user))
                {
                    this.DialogResult = DialogResult.OK;
                    this.Close();
                }
                else
                {
                    Common.ShowAlert("Chỉnh sửa người dùng bị lỗi");
                }
            }
        }

        #endregion
    }
}
